<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
</body>
<script>
	// var age = 28; //它是全局作用域中声明的变量：全局变量

	// function f(){

	// 	console.log(name) 
	// 	var name = '测试';
	// 	// name是函数f1内部声明的变量 ，所以name的作用域 在f1内部
	// 	console.log(name)
	// 	console.log(age)

	// }
	// f()
	// 这里是1级作用域
	// var sex = '男';

	// function f2(){
	// 	// sex name 可以访问，age 不可以访问
	// 	// 2级作用域
	// 	// return function(){
	// 	// var 
			
	// 	// 	console.log(sex,age,name)
	// 	// 	// 3级作用域
	// 	// 	var age = 19

	// 	// }
	// 	// var name = '张三'
	// }

	// var p = f2()
	// p()

	// 变量的声明和赋值是在不同的时期的
	// function fn(){
	// 	var age;
	// 	console.log(age)
	// 	 age  = 18;
	// 	console.log(age)
	// }
	// fn()
	//fn函数执行的时候，首先找到函数内部所有的变量，函数声明，把他们放在作用域中，给变量一个初始值，undefined 
		// 代码是逐条执行的，在过程中如果有赋值语句，就对变量进行赋值

	// function f1(){
	// 	var age;
	// 	console.log(age);
	// 	return function(){

	// 	}
	// 	age = 12;
	// 	// 变量提升
	// }

	// f1()

	// function fn(callback){
	// 	var age = 18;
	// 	callback()
	// }

	// fn(function(){
	// 	console.log(this)
	// 	console.log(age)
	// })
	// 1、查找当前作用域？ 没有age
	// 2、查找上一级作用域？ 是全局
	// 总结：看上一级作用域，不是说看函数在哪里调用，而是看函数在哪里编写
	
</script>
</html>